1 Introduction

This project was a comprehensive analysis of the spatial distribution of coinage originating from various mints and subsequently deposited in hoards across the Roman world between approximately 500 BCE and 200 CE. By examining patterns in coin dispersal and quantifying the distances between points of minting and findspots, the study aimed to examine the broader dynamics of monetary circulation, and economic integration within the Roman economy. The ultimate objective was to generate insights into the mechanisms of coin movement and to contribute to our understanding of the structure and function of the ancient Roman economic system.

The first step that I’d like to look at is the probability of a coin existing in a certain location base on hoard finds.

2 Methodology

2.1 Data Source

For the initial analysis, the data from the Coin Hoards of the Roman Republic was accessed. This dataset is based of the work of Crawford (1969), as enhanced by Gruber and Lockyear.

This data can be accessed via the website’s APIs or via the SPARQL endpoint at Nomisma. Not all hoards were appropriate for analysis within the CHRR database. This initial analysis only included hoard findspots that had the following:

  • Approximate (± 5/10 km)geolocation of hoard
  • At least 1 coin with a known mint
  • Approximate mint geolocation

The findspot information was mostly within a 5 kilometer radius of the findspot. Some was 10 km, but that was less often. For security reasons, the exact geolocation was never directly published to prevent theft and looting.

For now, all the findspots meeting the criteria were used, but this may be narrowed in the future.

2.2 Factors affecting coin hoard data

This is the hoard process, re-imagined from Lockyear (1990).

2.3 Data Acquisition

2.3.1 First Dataset Method

To acquire the data, two methods were used. First a list of all the hoards in the CHRR dataset was gathered from the SPARQL endpoint.


PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX nmo: <http://nomisma.org/ontology#>

SELECT DISTINCT ?hoardID
WHERE {
  ?hoard a nmo:Hoard .
  FILTER(STRSTARTS(STR(?hoard), "http://numismatics.org/chrr/id/"))
  BIND(REPLACE(STR(?hoard), "http://numismatics.org/chrr/id/", "") AS ?hoardID)
}
ORDER BY ?hoardID

Using the list of three digit hoard identifiers from this list, an R program was written to download all of the identified hoards using the schema:

# ---- 3. Define File Formats and URI Templates ----
formats <- list(
  xml     = "http://numismatics.org/chrr/id/XXX",
  rdf     = "https://numismatics.org/chrr/id/XXX.rdf",
  ttl     = "https://numismatics.org/chrr/id/XXX.ttl",
  jsonld  = "https://numismatics.org/chrr/id/XXX.jsonld",
  geojson = "https://numismatics.org/chrr/id/XXX.geojson"
)

‘XXX’ was replaced by the three digit hoard identifier.

Example hoard identifier list:

...
AVO
AVV
AVZ
AZA
AZN
AZU
...

All of the RDF/XML, TTL, JSON-LD, and GeoJSON data were gathered for the hoards. The code for this is not included in this file.

From this dataset, all the coin identifiers in the dataset were extracted. The URIs were in the form:


# ---- 3. Define Format URIs ----
format_urls <- list(
  xml      = "http://numismatics.org/crro/id/XXX.xml",
  rdf      = "https://numismatics.org/crro/id/XXX.rdf",
  ttl      = "https://numismatics.org/crro/id/XXX.ttl",
  jsonld   = "https://numismatics.org/crro/id/XXX.jsonld",
  geojson  = "https://numismatics.org/crro/id/XXX.geojson",
  manifest = "http://numismatics.org/crro/manifest/XXX"
)

The coin ids, which replaced the XXX above, were in the form:

...
rrc-210.1
rrc-214.1b
rrc-232.1
rrc-235.1c
rrc-236.1a
rrc-243.1
rrc-247.1
rrc-260.1
rrc-270.1
...

All of the RDF/XML, TTL, JSON-LD, and GeoJSON data were gathered for the hoards. The code for this is not included in this file.

2.3.2 Second Dataset Method

The second method used the following SPARQL query through the Nomisma SPARQL endpoint.


PREFIX crm:   <http://www.cidoc-crm.org/cidoc-crm/>
PREFIX dcterms:<http://purl.org/dc/terms/>
PREFIX foaf:  <http://xmlns.com/foaf/0.1/>
PREFIX geo:   <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX nm:    <http://nomisma.org/id/>
PREFIX nmo:   <http://nomisma.org/ontology#>
PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>

SELECT DISTINCT
  ?hoard ?hoardID
  ?type (COALESCE(?tlabel, ?plabel, ?rlabel, ?flabel) AS ?typeLabel)
  (STR(?startDate) AS ?startYear)
  (STR(?endDate)   AS ?endYear)
  ?denomination ?denominationLabel
  ?material     ?materialLabel
  ?mint ?mintID
  ?hoardLat ?hoardLong
  ?mintLat  ?mintLong
WHERE {
  # --- All CHRR hoards and their contents ---
  ?hoard a nmo:Hoard ;
         dcterms:tableOfContents ?contents .
  FILTER(STRSTARTS(STR(?hoard), "http://numismatics.org/chrr/id/"))
  BIND(REPLACE(STR(?hoard), "http://numismatics.org/chrr/id/", "") AS ?hoardID)

  # --- Mint (via type-series item or directly on contents) ---
  {
    ?contents nmo:hasTypeSeriesItem ?type .
    ?type     nmo:hasMint ?mint .
  }
  UNION
  {
    ?contents nmo:hasMint ?mint .
    OPTIONAL { ?contents nmo:hasTypeSeriesItem ?type }
  }
  BIND(REPLACE(STR(?mint), "http://nomisma.org/id/", "") AS ?mintID)

  # --- Type labels & dates (from CRRO type, when present) ---
  OPTIONAL { ?type dcterms:title    ?tlabel  FILTER(LANG(?tlabel)  = "" || LANGMATCHES(LANG(?tlabel),  "en")) }
  OPTIONAL { ?type skos:prefLabel   ?plabel  FILTER(LANG(?plabel) = "" || LANGMATCHES(LANG(?plabel), "en")) }
  OPTIONAL { ?type rdfs:label       ?rlabel  FILTER(LANG(?rlabel)  = "" || LANGMATCHES(LANG(?rlabel),  "en")) }
  OPTIONAL { ?type foaf:name        ?flabel  FILTER(LANG(?flabel)  = "" || LANGMATCHES(LANG(?flabel),  "en")) }

  OPTIONAL { ?type nmo:hasStartDate ?startDate }
  OPTIONAL { ?type nmo:hasEndDate   ?endDate }

  # --- Denomination & material (from type) ---
  OPTIONAL {
    ?type nmo:hasDenomination ?denomination .
    OPTIONAL {
      ?denomination (skos:prefLabel|rdfs:label|foaf:name) ?denominationLabel .
      FILTER(LANG(?denominationLabel) = "" || LANGMATCHES(LANG(?denominationLabel), "en"))
    }
  }
  OPTIONAL {
    ?type nmo:hasMaterial ?material .
    OPTIONAL {
      ?material (skos:prefLabel|rdfs:label|foaf:name) ?materialLabel .
      FILTER(LANG(?materialLabel) = "" || LANGMATCHES(LANG(?materialLabel), "en"))
    }
  }

  # --- Mint geolocation (Nomisma places) ---
  OPTIONAL {
    { ?mint geo:location [ geo:lat ?mintLat ;  geo:long ?mintLong ] }
    UNION
    { ?mint geo:lat ?mintLat . ?mint geo:long ?mintLong }
  }

  # --- Hoard geolocation (several fallbacks common in CHRR) ---
  OPTIONAL {
    # A) Direct findspot place with geo
    { ?hoard nmo:hasFindspot ?hPlace .
      { ?hPlace geo:location [ geo:lat ?hoardLat ; geo:long ?hoardLong ] }
      UNION
      { ?hPlace geo:lat ?hoardLat . ?hPlace geo:long ?hoardLong }
    }
    UNION
    # B) CRM region chain with geo
    {
      ?hoard nmo:hasFindspot [
        crm:P7_took_place_at [
          crm:P89_falls_within ?region
        ]
      ] .
      ?region geo:location ?spatialThing .
      ?spatialThing geo:lat ?hoardLat ; geo:long ?hoardLong .
    }
    UNION
    # C) dcterms:spatial to a place with geo
    {
      ?hoard dcterms:spatial ?hPlace2 .
      { ?hPlace2 geo:location [ geo:lat ?hoardLat ; geo:long ?hoardLong ] }
      UNION
      { ?hPlace2 geo:lat ?hoardLat . ?hPlace2 geo:long ?hoardLong }
    }
  }
}
ORDER BY ?hoardID ?typeLabel ?type ?mint

This SPARQL query was run using this R program:

# Load libraries (use install.packages() if not installed)
library(readr)
library(SPARQL)

# Define the SPARQL endpoint
endpoint <- "https://nomisma.org/query"

# Read SPARQL query from external file
query <- paste(readLines("current_query.txt"), collapse = "\n")

# Execute SPARQL query and retrieve results
qd <- SPARQL(endpoint, query)
nomisma.edges <- qd$results

# Generate a filesystem-safe timestamp
timestamp <- format(Sys.time(), "%Y-%m-%d_%H-%M-%S")
output_filename <- paste0("current_sparql_", timestamp, ".csv")

# Write results to CSV
write_csv(nomisma.edges, output_filename)

# Append query to end of file as comments
query_lines <- readLines("current_query.txt")
commented_query <- paste0("# ", query_lines)
write(commented_query, file = output_filename, append = TRUE)

# Print confirmation
cat("Results written to:", output_filename, "\n")

In each of the data processing methods below, it should be noted which dataset method was used.

2.4 Data Processing

2.4.1 First Method Hoards

The a sample of the initial set of data looks like:

## Rows: 926 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): hoard_id, hoard_name, hoard_uri, hoard_geometry, mint_name, mint_ur...
## dbl (6): hoard_lat, hoard_lon, mint_average_count, mint_lat, mint_lon, mint_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
First 20 Hoards with Rome as Mint, Method 1
hoard_id hoard_name hoard_uri hoard_lat hoard_lon hoard_geometry mint_name mint_uri mint_average_count mint_lat mint_lon mint_geometry mint_hoard_distance_km
1PO Poiana Crăcăoani (Romania) https://sws.geonames.org/670093/ 47.06667 26.31667 POINT (26.31667 47.06667) Rome http://nomisma.org/id/rome 123 41.9 12.5 POINT (12.5 41.9) 1236.48816
ABE Abertura (Spain) https://sws.geonames.org/2522486/ 39.24352 -5.81394 POINT (-5.81394 39.24352) Rome http://nomisma.org/id/rome 23 41.9 12.5 POINT (12.5 41.9) 1573.37081
ACT Áktion (Greece) https://sws.geonames.org/265389/ 38.94019 20.76875 POINT (20.76875 38.94019) Rome http://nomisma.org/id/rome 3 41.9 12.5 POINT (12.5 41.9) 773.90425
ADJ Amărăştii de Jos (Romania) https://sws.geonames.org/686386/ 43.95000 24.16667 POINT (24.16667 43.95) Rome http://nomisma.org/id/rome 4 41.9 12.5 POINT (12.5 41.9) 977.06559
ADM Massa d’Albe (Italy) https://sws.geonames.org/3173765/ 42.10723 13.39429 POINT (13.39429 42.10723) Rome http://nomisma.org/id/rome 93 41.9 12.5 POINT (12.5 41.9) 77.49022
ADR Alcalá del Río (Spain) https://sws.geonames.org/2522474/ 37.51780 -5.98185 POINT (-5.98185 37.5178) Rome http://nomisma.org/id/rome 159 41.9 12.5 POINT (12.5 41.9) 1652.39657
ADU Albanchez de Mágina (Spain) https://sws.geonames.org/2522239/ 37.79263 -3.46833 POINT (-3.46833 37.79263) Rome http://nomisma.org/id/rome 16 41.9 12.5 POINT (12.5 41.9) 1436.74096
AGG Aggius (Italy) https://sws.geonames.org/3183443/ 40.92995 9.06517 POINT (9.06517 40.92995) Rome http://nomisma.org/id/rome 10 41.9 12.5 POINT (12.5 41.9) 306.37972
AGN Agnona (Italy) https://sws.geonames.org/6693917/ 45.72602 8.25957 POINT (8.25957 45.72602) Rome http://nomisma.org/id/rome 244 41.9 12.5 POINT (12.5 41.9) 545.19648
AID Aidóna (Greece) https://sws.geonames.org/265542/ 39.60542 21.46797 POINT (21.46797 39.60542) Rome http://nomisma.org/id/rome 4 41.9 12.5 POINT (12.5 41.9) 797.75946

This is limited only to hoards with coins from the Rome mint, and the distance is crudely calculated as the great circle distance. We expect to use ORBIS to more accurately model transportation networks and distances.

There is more granular data that includes Terminus Ante Quem (closing date), specific coin types and authorities, and dates. This has not yet been combined into the data set.

It is expected that there would be some spatial autocorrelation of the data since there is the expectation that coins would not be distributed along whatever routes they took to their final destination in the hoard.

2.4.2 Second Method Hoards

While the first and second methods of data aquisition should be yield exactly the same dataset, this has not been verified, so in an abundance of caution, they are being treated distinctly.

2.5 Methodology Notes

## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 35221 Columns: 16
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (10): hoard, hoardID, type, typeLabel, denomination, denominationLabel, ...
## dbl  (6): startYear, endYear, hoardLat, hoardLong, mintLat, mintLong
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
First 20 Hoards with Rome as Mint, Method 2
hoard hoardID type typeLabel startYear endYear denomination denominationLabel material materialLabel mint mintID hoardLat hoardLong mintLat mintLong
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-187.1 “RRC -169 -158 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-200.1 “RRC -155 -155 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-216.1 “RRC -148 -148 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-228.2 “RRC -140 -140 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-231.1 “RRC -138 -138 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-233.1 “RRC -138 -138 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-237.1a “RRC -136 -136 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-244.1 “RRC -134 -134 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-245.1 “RRC -134 -134 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5
http://numismatics.org/chrr/id/1PO 1PO http://numismatics.org/crro/id/rrc-250.1 “RRC -132 -132 http://nomisma.org/id/denarius http://nomisma.org/id/ar http://nomisma.org/id/rome rome 47.06903 26.30626 41.9 12.5

2.5.1 Coordinate Reference System

The coordinate reference system (CRS) chosen for analysis is EPSG:3035 (ETRS89-LAEA Europe). This is a Lambert Azimuthal Equal Area CRS that minimizes the distortion across the continent, and is used by many EU statistical products. It should provide isotropy for hex binning and statistical analysis.

3 Questions

  • Questions need to be narrowed down.
  • Should there be a check for CSR?
  • Can we create a map or a probability surface for mints?
  • Can we create any map for the velocity of the M1 money supply? Over time using the terminus ante quem? Using coin wear?
  • What about looking at the temporal distribution of coins in hoards from single mints over time. Hoard, and count or percentage?

4 Analysis

4.1 Mints Locations

4.2 All Hoard Findspots

For the CHRR dataset

4.3 Mint Histograms

These histograms used dataset 1. Mint Average Count is the total count of coins from a mint in a hoard. Percentage is the percentage of coins from a mint relative to the hoard total size.

## Rows: 926 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): hoard_id, hoard_name, hoard_uri, hoard_geometry, mint_name, mint_ur...
## dbl (6): hoard_lat, hoard_lon, mint_average_count, mint_lat, mint_lon, mint_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Warning: Removed 4 rows containing non-finite outside the scale range
## (`stat_bin()`).

## Warning: Removed 4 rows containing non-finite outside the scale range
## (`stat_bin()`).

## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_bin()`).

## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_bin()`).

4.4 Radial Plots of Hoards

## Creating radar plots for hoards with non-Rome share ≥ 20%...

## 
## Summary:
## Non-Rome share threshold: 20%
## Number of hoards meeting criterion and plotted: 33
## Number of mints included: 16
## Total plots created: 33
## Mints included: Apollonia, Illyria, Caesaraugusta, Colonia Patricia, Dyrrhachium, Emerita, Emporiae, Ephesus, Istrus, Lugdunum, Massalia, Narbo, Osca, Pergamum, Rome, Samos, Thasos

4.5 Network Graph

Based on work by Heath (2017).

4.6 Spatial Autocorrelation

Code remains in document, but is not run or included at this point.

4.7 Distance Decay

## Analysis Summary:
## =================
## Total findspots: 486
## Total coins from Rome: 94533
## Hexes with data: 229
## Total hexes: 5000
## Max distance to Rome: 4372.11 km
## Min distance to Rome: 17.74 km
## 
## Distance Decay Model (Exponential):
## ===================================
## 
## Formula: total_coins ~ a * exp(-b * dist_to_rome)
## 
## Parameters:
##    Estimate Std. Error t value Pr(>|t|)    
## a 2.013e+03  3.304e+02   6.092 4.72e-09 ***
## b 2.583e-03  4.720e-04   5.473 1.17e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 814.1 on 227 degrees of freedom
## 
## Number of iterations to convergence: 7 
## Achieved convergence tolerance: 9.615e-06
## `geom_smooth()` using formula = 'y ~ x'

4.8 Hex Grids KDE

Weighted by the number of coins. Trying to estimate the probability of finding a coin in a hex.

## Rows: 926 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): hoard_id, hoard_name, hoard_uri, hoard_geometry, mint_name, mint_ur...
## dbl (6): hoard_lat, hoard_lon, mint_average_count, mint_lat, mint_lon, mint_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 16 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): City, Country
## dbl (2): Latitude, Longitude
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

## Scale on map varies by more than 10%, scale bar may be inaccurate

4.9 Temporal Histograms

Using the second dataset, plot the histogram of the dates of the coins in all the mints.

## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)

4.10 Diggle

Notes:

  • These plots use the first dataset.
  • Is hex binning appropriate? If so how small. Smaller is greater compute time. currently 100 km hexes.
  • What weighting, if any is appropriate?
  • Should any adpative bandwidth selection be used? Sheather-Jones? Currently sigma = 150000
  • Need to change from spatstat to sparr packages
## Rows: 926 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): hoard_id, hoard_name, hoard_uri, hoard_geometry, mint_name, mint_ur...
## dbl (6): hoard_lat, hoard_lon, mint_average_count, mint_lat, mint_lon, mint_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

4.11 Diggle-Rome

Notes: - Median nearest neighbors sets hex cellsize for summarising KDE output. - Sigma (h0) is estimated from bw.diggle(pp) and used as global bandwidth / pilot for adaptive smoothing. - Using an adaptive method so that bandwidth increases in sparse areas, decreases in dense areas, based on pilot intensity.

## Rows: 926 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): hoard_id, hoard_name, hoard_uri, hoard_geometry, mint_name, mint_ur...
## dbl (6): hoard_lat, hoard_lon, mint_average_count, mint_lat, mint_lon, mint_...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

4.12 Test

5 Test 2

6 Bibliography

Crawford, M. H. 1969. Roman Republican Coin Hoards. London: Royal Numismatic Society. Esty, W. W. (1997). Statistics in Numismatics. In: C. Morrison and B. Kluge (eds.). A Survey of Numismatic Research 1990-1995. International Association of Professional Numismatists, Special Publication n. 13, Berlin.

Finley, Moses I. 1973. The Ancient Economy. Berkeley: University of California Press.

Gruber, E. W. 2013. Recent Advancements in Roman Numismatics. Master’s dissertation, University of Virginia.

Gruber, E. W. and K. Lockyear forthcoming. “From dBase III+ to the semantic web: twenty-five years of the Coin Hoards of the Roman Republic database.” Proceedings of CAA2013 held in Perth, March 2013.

Haddad, E., & Araújo, I. (2022). Regional Science Meets the Past: What Do Coin Finds Tell Us About the Ancient Spatial Economy? (No. 2-2022). Núcleo de Economia Regional e Urbana da Universidade de São Paulo (NEREUS).

Lockyear, K., & Rahtz, S. (n.d.). Computer Applications and Quantitative Methods in Archaeology 1990.

Lockyear, K. 1989. A Statistical Investigation of Roman Republican Coin Hoards. Master’s dissertation, University of Southampton.

Lockyear, K. 1996. Multivariate Money. A statistical analysis of Roman Republican coin hoards with special reference to material from Romania. Ph.D. thesis, Institute of Archaeology, University College London.

Lockyear, K. 2007. Patterns and Process in Late Roman Republican Coin Hoards, 157–2 BC. Oxford: British Archaeological Reports.

Lockyear, Kris (2013). Coin hoards of the Roman Republic Online, version X. New York: American Numismatic Society. Data retrieved from on …

Lockyear, Kris. 2007. Patterns and Process in Late Roman Republican Coin Hoards, 157-2 BC. Ann Arbor, MI: University of Michigan Press. doi:10.30861/9781407301648.

Sebastian Heath. (2017). sfsheath/opal-heath-digital-supplement 0.0.2-alpha (0.0.2-alpha). Zenodo. https://doi.org/10.5281/zenodo.1038660

7 R Configuration

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.4.3 (2025-02-28)
##  os       macOS Sequoia 15.6
##  system   aarch64, darwin20
##  ui       X11
##  language (EN)
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       America/Chicago
##  date     2025-08-15
##  pandoc   3.4 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
##  quarto   1.6.40 @ /usr/local/bin/quarto
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package           * version   date (UTC) lib source
##  abind               1.4-8     2024-09-12 [1] CRAN (R 4.4.1)
##  base64enc           0.1-3     2015-07-28 [1] CRAN (R 4.4.0)
##  bit                 4.6.0     2025-03-06 [1] CRAN (R 4.4.1)
##  bit64               4.6.0-1   2025-01-16 [1] CRAN (R 4.4.1)
##  boot                1.3-31    2024-08-28 [1] CRAN (R 4.4.3)
##  bslib               0.9.0     2025-01-30 [1] CRAN (R 4.4.1)
##  cachem              1.1.0     2024-05-16 [1] CRAN (R 4.4.0)
##  class               7.3-23    2025-01-01 [1] CRAN (R 4.4.3)
##  classInt            0.4-11    2025-01-08 [1] CRAN (R 4.4.1)
##  cli                 3.6.5     2025-04-23 [1] CRAN (R 4.4.1)
##  codetools           0.2-20    2024-03-31 [1] CRAN (R 4.4.3)
##  colorspace          2.1-1     2024-07-26 [1] CRAN (R 4.4.0)
##  cols4all          * 0.8       2024-10-16 [1] CRAN (R 4.4.1)
##  crayon              1.5.3     2024-06-20 [1] CRAN (R 4.4.0)
##  crosstalk           1.2.1     2023-11-23 [1] CRAN (R 4.4.0)
##  curl                6.4.0     2025-06-22 [1] CRAN (R 4.4.1)
##  data.table          1.17.8    2025-07-10 [1] CRAN (R 4.4.1)
##  data.tree           1.1.0     2023-11-12 [1] CRAN (R 4.4.1)
##  DBI                 1.2.3     2024-06-02 [1] CRAN (R 4.4.0)
##  deldir              2.0-4     2024-02-28 [1] CRAN (R 4.4.0)
##  devtools          * 2.4.5     2022-10-11 [1] CRAN (R 4.4.0)
##  DiagrammeR        * 1.0.11    2024-02-02 [1] CRAN (R 4.4.0)
##  dichromat           2.0-0.1   2022-05-02 [1] CRAN (R 4.4.1)
##  digest              0.6.37    2024-08-19 [1] CRAN (R 4.4.1)
##  doParallel          1.0.17    2022-02-07 [1] CRAN (R 4.4.0)
##  dplyr             * 1.1.4     2023-11-17 [1] CRAN (R 4.4.0)
##  e1071               1.7-16    2024-09-16 [1] CRAN (R 4.4.1)
##  ellipsis            0.3.2     2021-04-29 [1] CRAN (R 4.4.0)
##  evaluate            1.0.4     2025-06-18 [1] CRAN (R 4.4.1)
##  farver              2.1.2     2024-05-13 [1] CRAN (R 4.4.0)
##  fastmap             1.2.0     2024-05-15 [1] CRAN (R 4.4.0)
##  fmsb              * 0.7.6     2024-01-19 [1] CRAN (R 4.4.0)
##  forcats           * 1.0.0     2023-01-29 [1] CRAN (R 4.4.0)
##  foreach             1.5.2     2022-02-02 [1] CRAN (R 4.4.0)
##  fs                  1.6.6     2025-04-12 [1] CRAN (R 4.4.1)
##  generics            0.1.4     2025-05-09 [1] CRAN (R 4.4.1)
##  ggplot2           * 3.5.2     2025-04-09 [1] CRAN (R 4.4.1)
##  ggrepel           * 0.9.6     2024-09-07 [1] CRAN (R 4.4.1)
##  ggspatial         * 1.1.9     2023-08-17 [1] CRAN (R 4.4.0)
##  glue                1.8.0     2024-09-30 [1] CRAN (R 4.4.1)
##  goftest             1.2-3     2021-10-07 [1] CRAN (R 4.4.0)
##  gtable              0.3.6     2024-10-25 [1] CRAN (R 4.4.1)
##  hms                 1.1.3     2023-03-21 [1] CRAN (R 4.4.0)
##  htmltools         * 0.5.8.1   2024-04-04 [1] CRAN (R 4.4.0)
##  htmlwidgets       * 1.6.4     2023-12-06 [1] CRAN (R 4.4.0)
##  httpuv              1.6.16    2025-04-16 [1] CRAN (R 4.4.1)
##  igraph            * 2.1.4     2025-01-23 [1] CRAN (R 4.4.1)
##  isoband             0.2.7     2022-12-20 [1] CRAN (R 4.4.0)
##  iterators           1.0.14    2022-02-05 [1] CRAN (R 4.4.0)
##  jquerylib           0.1.4     2021-04-26 [1] CRAN (R 4.4.0)
##  jsonlite            2.0.0     2025-03-27 [1] CRAN (R 4.4.1)
##  KernSmooth          2.23-26   2025-01-01 [1] CRAN (R 4.4.3)
##  knitr             * 1.50      2025-03-16 [1] CRAN (R 4.4.1)
##  labeling            0.4.3     2023-08-29 [1] CRAN (R 4.4.0)
##  later               1.4.2     2025-04-08 [1] CRAN (R 4.4.1)
##  lattice             0.22-7    2025-04-02 [1] CRAN (R 4.4.1)
##  leafem              0.2.4     2025-05-01 [1] CRAN (R 4.4.1)
##  leaflegend          1.2.1     2024-05-09 [1] CRAN (R 4.4.0)
##  leaflet             2.2.2     2024-03-26 [1] CRAN (R 4.4.0)
##  leaflet.providers   2.0.0     2023-10-17 [1] CRAN (R 4.4.0)
##  leafsync            0.1.0     2019-03-05 [1] CRAN (R 4.4.0)
##  lifecycle           1.0.4     2023-11-07 [1] CRAN (R 4.4.0)
##  logger              0.4.0     2024-10-22 [1] CRAN (R 4.4.1)
##  lubridate         * 1.9.4     2024-12-08 [1] CRAN (R 4.4.1)
##  lwgeom              0.2-14    2024-02-21 [1] CRAN (R 4.4.0)
##  magrittr            2.0.3     2022-03-30 [1] CRAN (R 4.4.0)
##  maps              * 3.4.3     2025-05-26 [1] CRAN (R 4.4.1)
##  maptiles            0.10.0    2025-05-07 [1] CRAN (R 4.4.1)
##  MASS                7.3-65    2025-02-28 [1] CRAN (R 4.4.1)
##  Matrix              1.7-3     2025-03-11 [1] CRAN (R 4.4.1)
##  memoise             2.0.1     2021-11-26 [1] CRAN (R 4.4.0)
##  mgcv                1.9-3     2025-04-04 [1] CRAN (R 4.4.1)
##  microbenchmark      1.5.0     2024-09-04 [1] CRAN (R 4.4.1)
##  mime                0.13      2025-03-17 [1] CRAN (R 4.4.1)
##  miniUI              0.1.2     2025-04-17 [1] CRAN (R 4.4.1)
##  misc3d              0.9-1     2021-10-07 [1] CRAN (R 4.4.1)
##  networkD3         * 0.4.1     2025-04-14 [1] CRAN (R 4.4.1)
##  nlme              * 3.1-168   2025-03-31 [1] CRAN (R 4.4.1)
##  patchwork         * 1.3.1     2025-06-21 [1] CRAN (R 4.4.1)
##  pillar              1.11.0    2025-07-04 [1] CRAN (R 4.4.1)
##  pkgbuild            1.4.8     2025-05-26 [1] CRAN (R 4.4.1)
##  pkgconfig           2.0.3     2019-09-22 [1] CRAN (R 4.4.0)
##  pkgload             1.4.0     2024-06-28 [1] CRAN (R 4.4.0)
##  png                 0.1-8     2022-11-29 [1] CRAN (R 4.4.0)
##  polyclip            1.10-7    2024-07-23 [1] CRAN (R 4.4.0)
##  profvis             0.4.0     2024-09-20 [1] CRAN (R 4.4.1)
##  promises            1.3.3     2025-05-29 [1] CRAN (R 4.4.1)
##  proxy               0.4-27    2022-06-09 [1] CRAN (R 4.4.0)
##  purrr             * 1.1.0     2025-07-10 [1] CRAN (R 4.4.1)
##  R6                  2.6.1     2025-02-15 [1] CRAN (R 4.4.1)
##  raster            * 3.6-32    2025-03-28 [1] CRAN (R 4.4.1)
##  RColorBrewer        1.1-3     2022-04-03 [1] CRAN (R 4.4.1)
##  Rcpp                1.1.0     2025-07-02 [1] CRAN (R 4.4.1)
##  readr             * 2.1.5     2024-01-10 [1] CRAN (R 4.4.0)
##  remotes             2.5.0     2024-03-17 [1] CRAN (R 4.4.0)
##  rlang               1.1.6     2025-04-11 [1] CRAN (R 4.4.1)
##  rmarkdown           2.29      2024-11-04 [1] CRAN (R 4.4.1)
##  rnaturalearth     * 1.1.0     2025-07-28 [1] CRAN (R 4.4.1)
##  rnaturalearthdata * 1.0.0     2024-02-09 [1] CRAN (R 4.4.0)
##  rpart             * 4.1.24    2025-01-07 [1] CRAN (R 4.4.3)
##  rstudioapi          0.17.1    2024-10-22 [1] CRAN (R 4.4.1)
##  s2                  1.1.9     2025-05-23 [1] CRAN (R 4.4.1)
##  sass                0.4.10    2025-04-11 [1] CRAN (R 4.4.1)
##  scales            * 1.4.0     2025-04-24 [1] CRAN (R 4.4.1)
##  sessioninfo         1.2.3     2025-02-05 [1] CRAN (R 4.4.1)
##  sf                * 1.0-21    2025-05-15 [1] CRAN (R 4.4.1)
##  shiny               1.11.1    2025-07-03 [1] CRAN (R 4.4.1)
##  sp                * 2.2-0     2025-02-01 [1] CRAN (R 4.4.1)
##  spacesXYZ           1.6-0     2025-06-06 [1] CRAN (R 4.4.1)
##  sparr             * 2.3-16    2025-03-20 [1] CRAN (R 4.4.1)
##  spatstat          * 3.4-0     2025-07-25 [1] CRAN (R 4.4.1)
##  spatstat.data     * 3.1-6     2025-03-17 [1] CRAN (R 4.4.1)
##  spatstat.explore  * 3.5-2     2025-07-22 [1] CRAN (R 4.4.1)
##  spatstat.geom     * 3.5-0     2025-07-20 [1] CRAN (R 4.4.1)
##  spatstat.linnet   * 3.3-1     2025-07-24 [1] CRAN (R 4.4.1)
##  spatstat.model    * 3.4-0     2025-07-23 [1] CRAN (R 4.4.1)
##  spatstat.random   * 3.4-1     2025-05-20 [1] CRAN (R 4.4.1)
##  spatstat.sparse     3.1-0     2024-06-21 [1] CRAN (R 4.4.0)
##  spatstat.univar   * 3.1-4     2025-07-13 [1] CRAN (R 4.4.1)
##  spatstat.utils      3.1-5     2025-07-17 [1] CRAN (R 4.4.1)
##  spData            * 2.3.4     2025-01-08 [1] CRAN (R 4.4.1)
##  spdep             * 1.3-13    2025-06-10 [1] CRAN (R 4.4.1)
##  stars               0.6-8     2025-02-01 [1] CRAN (R 4.4.1)
##  stringi             1.8.7     2025-03-27 [1] CRAN (R 4.4.1)
##  stringr           * 1.5.1     2023-11-14 [1] CRAN (R 4.4.0)
##  tensor              1.5.1     2025-06-17 [1] CRAN (R 4.4.1)
##  terra               1.8-60    2025-07-21 [1] CRAN (R 4.4.1)
##  tibble            * 3.3.0     2025-06-08 [1] CRAN (R 4.4.1)
##  tidyr             * 1.3.1     2024-01-24 [1] CRAN (R 4.4.0)
##  tidyselect          1.2.1     2024-03-11 [1] CRAN (R 4.4.0)
##  tidyverse         * 2.0.0     2023-02-22 [1] CRAN (R 4.4.0)
##  timechange          0.3.0     2024-01-18 [1] CRAN (R 4.4.1)
##  tmap              * 4.1       2025-05-12 [1] CRAN (R 4.4.1)
##  tmaptools           3.3       2025-07-24 [1] CRAN (R 4.4.1)
##  tzdb                0.5.0     2025-03-15 [1] CRAN (R 4.4.1)
##  units               0.8-7     2025-03-11 [1] CRAN (R 4.4.1)
##  urlchecker          1.0.1     2021-11-30 [1] CRAN (R 4.4.0)
##  usethis           * 3.1.0     2024-11-26 [1] CRAN (R 4.4.1)
##  V8                * 6.0.5     2025-07-31 [1] CRAN (R 4.4.1)
##  vctrs               0.6.5     2023-12-01 [1] CRAN (R 4.4.0)
##  viridisLite         0.4.2     2023-05-02 [1] CRAN (R 4.4.0)
##  visNetwork          2.1.2     2022-09-29 [1] CRAN (R 4.4.0)
##  vroom               1.6.5     2023-12-05 [1] CRAN (R 4.4.0)
##  withr               3.0.2     2024-10-28 [1] CRAN (R 4.4.1)
##  wk                  0.9.4     2024-10-11 [1] CRAN (R 4.4.1)
##  xfun                0.52      2025-04-02 [1] CRAN (R 4.4.1)
##  XML                 3.99-0.18 2025-01-01 [1] CRAN (R 4.4.1)
##  xtable              1.8-4     2019-04-21 [1] CRAN (R 4.4.0)
##  yaml                2.3.10    2024-07-26 [1] CRAN (R 4.4.0)
## 
##  [1] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library
##  * ── Packages attached to the search path.
## 
## ──────────────────────────────────────────────────────────────────────────────